package com.financial.common.vo;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;


@Data
public class PageResult {
    
    private List<Object> listData;  // 当前页的结果集数据
    private Integer totalCount;     // 总数据条数

    private Integer currentPage = 1;  // 当前页码
    private Integer pageSize = 10;    // 每页数据条数

    private Integer prevPage;  // 上一页(页码)
    private Integer nextPage;  // 下一页(页码)
    private Integer totalPage; // 总页数

    // 如果总数据条数为0,返回一个空集
    public static PageResult empty(Integer pageSize) {
        return new PageResult(new ArrayList<>(), 0, 1, pageSize);
    }

    // 获取页码总数
    public int getTotalPage() {
        return totalPage == 0 ? 1 : totalPage;
    }

    public PageResult(List listData, Integer totalCount, Integer currentPage, Integer pageSize) {
        this.listData = listData;
        this.totalCount = totalCount;
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        
        if( this.totalCount % this.pageSize == 0 ) {
            // 如果【数据总数】能够被【每页数据条数】整除，
            // 那么【总页数】=【数据总数】÷【每页数据条数】的结果
            this.totalPage = this.totalCount / this.pageSize;
            
        } else {
            // 否则，【总页数】= 【数据总数】÷【每页数据条数】 + 1
            // 应为结果存在余数，所以要多加1页，来显示多出来的数据
            this.totalPage = this.totalCount / this.pageSize + 1;
        }
        
        this.prevPage = this.currentPage > 1 ? this.currentPage - 1 : 1;
        
        this.nextPage = this.currentPage < this.totalPage ? this.currentPage + 1 : this.totalPage;
    }
}
